package io.renren.modules.jxgkphone.service.Impl;


import io.renren.modules.jxgkphone.dao.ClassAttendanceMapper;
import io.renren.modules.jxgkphone.dao.ClassCourseMapper;
import io.renren.modules.jxgkphone.entity.ClassAttendance;
import io.renren.modules.jxgkphone.entity.ClassCourse;
import io.renren.modules.jxgkphone.service.ClassAttendanceService;
import io.renren.modules.jxgkphone.tempEntity.AttendanceStateInfo;
import io.renren.modules.jxgkphone.tempEntity.TempAttend;
import io.renren.modules.jxgkphone.tempEntity.TempStudentAttendence;
import io.renren.modules.jxgkphone.tempEntity.TempUpdateAttend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Map;

@Service
@Transactional
public class ClassAttendanceServiceImpl implements ClassAttendanceService {
    @Autowired
    ClassAttendanceMapper classAttendanceMapper;
    @Autowired
    ClassCourseMapper classCourseMapper;


    //第一个接口：点开这个页面就要返回整个班级所有人的出勤状态
    @Override
    public  List<TempAttend> FindClassAttendence(String cid, String scid){
                List<TempAttend> stuAD=classAttendanceMapper.FindClassAttendence( cid,scid);
        return  stuAD;
    }
    //返回班級所有人的出勤狀態/老师端

    public List<TempAttend> UpdateClassStatusTeacher(List<TempUpdateAttend> tempUpdateAttends) {
        List<TempAttend> stuAD=null;
        ClassCourse classCourse=classCourseMapper.getCourseById(tempUpdateAttends.get(0).getCid());
        //判断是否已修改过考勤，当状态为2的时候不允许修改
        if(classCourse==null||classCourse.getIsAttendance().equals("2")){}
        else {
            //考勤状态+1，0未考勤，1已考勤，2已修改
            Integer isAttendance= Integer.parseInt(classCourse.getIsAttendance())+1;
            classCourse.setIsAttendance(isAttendance.toString());
            classCourseMapper.updateIsAttendance(classCourse);
            for(TempUpdateAttend t:tempUpdateAttends)
            {
                t.setIsAttendance(isAttendance);
                // if(t.getImagePath()==null) t.setImagePath("");
            }
            classAttendanceMapper.deleteClassStatus(tempUpdateAttends.get(0).getCid());
            classAttendanceMapper.InsertClassStatus(tempUpdateAttends);


            stuAD = classAttendanceMapper.FindClassAttendence(tempUpdateAttends.get(0).getCid(), tempUpdateAttends.get(0).getStudentClassName());

        }
        return stuAD;
    }




    //第二个：查询->更新（插入）->查询
    @Override
    public List<TempAttend> UpdateStatus(TempUpdateAttend tempUpdateAttend){
        //查找该同学是否已经考勤过
        String stuStatus=classAttendanceMapper.SelectStuStatus(tempUpdateAttend.getCid(),tempUpdateAttend.getStuId());
        if(stuStatus==null){
            //某同学没有考勤过
            System.out.println("没有考勤过");
            classAttendanceMapper.InsertStatus(tempUpdateAttend.getCid(),tempUpdateAttend.getStuId(),tempUpdateAttend.getAttendenceState(),
                    tempUpdateAttend.getOperatorId(),tempUpdateAttend.getOperatorName());
        }
        else{
            System.out.println("考勤过");
            classAttendanceMapper.UpdateStatus(tempUpdateAttend.getCid(),tempUpdateAttend.getStuId(),tempUpdateAttend.getAttendenceState(),
                    tempUpdateAttend.getOperatorId(),tempUpdateAttend.getOperatorName());
        }
        List<TempAttend> stuAD=classAttendanceMapper.FindClassAttendence(tempUpdateAttend.getCid(),tempUpdateAttend.getStudentClassName());

        return  stuAD;
    }
    @Override
    public List<TempStudentAttendence> selectStudentAttendence(Map<String,Object> map){
        return classAttendanceMapper.selectStudentAttendence(map);
    }
    @Override
    public  int queryTotal(Map<String,Object> map){
        return classAttendanceMapper.queryTotal(map);
    }

    @Override
    public List<TempAttend> UpdateClassStatus(List<TempUpdateAttend> tempUpdateAttends) {
        List<TempAttend> stuAD=null;
        ClassCourse classCourse=classCourseMapper.getCourseById(tempUpdateAttends.get(0).getCid());
        //判断是否已修改过考勤，当状态为2的时候不允许修改
        if(classCourse==null||classCourse.getIsAttendance().equals("2")){}
        else {
            //考勤状态+1，0未考勤，1已考勤，2已修改
            Integer isAttendance= Integer.parseInt(classCourse.getIsAttendance())+1;
            classCourse.setIsAttendance(isAttendance.toString());
            classCourseMapper.updateIsAttendance(classCourse);
            for(TempUpdateAttend t:tempUpdateAttends)
            {
                t.setIsAttendance(isAttendance);
               // if(t.getImagePath()==null) t.setImagePath("");
            }
            classAttendanceMapper.deleteClassStatus(tempUpdateAttends.get(0).getCid());
            classAttendanceMapper.InsertClassStatus(tempUpdateAttends);


            stuAD = classAttendanceMapper.FindClassAttendence(tempUpdateAttends.get(0).getCid(), tempUpdateAttends.get(0).getStudentClassName());

        }
        return stuAD;
    }
    public String SelectStuStatus(String cid,String stu_id){
        return classAttendanceMapper.SelectStuStatus(cid,stu_id);
    }
    public List<AttendanceStateInfo> findClassAttendanceTeacher(String courseId, String studentClassName){
          List<AttendanceStateInfo> ASI=classAttendanceMapper.findClassAttendanceTeacher(courseId,studentClassName);


          return ASI;
    }



}
